package com.cmbdb.core.common;

import java.util.List;

/**
 * 注释
 *
 * @author: coding99
 * @Date: 17-3-3
 * @Time: 上午11:28
 */
public interface BaseService<T> {

    /**
     * 插入一条记录
     * @param entity
     * @return
     */
    boolean insert(T entity);

    /**
     * 插入一条记录（选择字段， null 字段不插入）
     * @param entity
     * @return
     */
    boolean insertSelective(T entity);

    /**
     * 根据 ID 删除
     * @param id
     * @return
     */
    boolean deleteByPrimaryKey(Object id);

    /**
     * 根据 对象属性删除
     * @param entity
     * @return
     */
    boolean delete(T entity);

    /**
     * 根据 ID 选择修改
     * @param entity
     * @return
     */
    boolean updateByPrimaryKeySelective(T entity);

    /**
     * 根据 ID 选择修改
     * @param entity
     * @return
     */
    boolean updateByPrimaryKey(T entity);

    /**
     * 根据 ID 查询
     * @param id
     * @return
     */
    T selectByPrimaryKey(Object id);


    /**
     * 查询全部记录
     * @return
     */
    List<T> selectAll();

    /**
     * 根据实体中的属性进行查询，只能有一个返回值，有多个结果是抛出异常，查询条件使用等号
     *
     * @param entity
     * @return
     */
    T selectOne(T entity);

    /**
     * 根据实体中的属性值进行查询，查询条件使用等号
     *
     * @param record
     * @return
     */
    List<T> select(T record);

    /**
     * Datatable 分页查询
     */
    List<T> selectByPage(T entity, int page, int rows);

}
